package com.powerflasher.SampleApp {
	import org.flixel.*;
	
	public class Nivel3_2 extends FlxState{
		[Embed(source = "13.png")] public static var bricks:Class;
		[Embed(source = "6.png")] public static var clouds:Class;
		[Embed(source = "map3_2_1.csv", mimeType = "application/octet-stream")] public static var mapa:Class;
		[Embed(source = "map3_2_2.csv", mimeType = "application/octet-stream")] public static var mapaParedes:Class;
		
		private var bala1:Bala;
		private var bala2:Bala;
		private var bala3:Bala;
		private var bala4:Bala;
		private var plataforma1:Plataforma;
		private var plataforma2:Plataforma;
		private var jugador:Jugador;
		private var jet:Jet;
		private var map:FlxTilemap;
		private var mapWall:FlxTilemap;
		private var t:Number = 0;
		private var caja:Box;
		private var caja1:Box;
		private var caja2:Box;
		private var caja3:Box;
		private var direccion:Boolean = true;
		private var direccionV:Boolean = true;
		private var paused:Boolean;
		private var texto:FlxText;
		private var cielo:sky;
		
		public function Nivel3_2(){
        	super();
			
        }
		
		override public function create():void{
            jugador = new Jugador(295,1300);
			jet = new Jet(900, 1000, 3);
			bala1 = new Bala(0,0,0,0,0);
			bala2 = new Bala(0,0,0,0,0);
			bala3 = new Bala(0,0,0,0,0);
			bala4 = new Bala(0,0,0,0,0);
			caja = new Box(350, 1340);
			caja1 = new Box(350, 928);
			caja2 = new Box(350, 512);
			caja3 = new Box(350, 256);
			caja.acceleration.y = 1000;
			caja1.acceleration.y = 1000;
			caja2.acceleration.y = 1000;
			caja3.acceleration.y = 1000;
			plataforma1 = new Plataforma(300, 800);
			plataforma1.acceleration.y = 0;
			plataforma2 = new Plataforma(150, 700);
			plataforma2.acceleration.y = 0;
			

			
			plataforma1.allowCollisions = FlxObject.UP;
			plataforma2.allowCollisions = FlxObject.UP;
			
			map=new FlxTilemap();
			map.loadMap(new mapa(), bricks, 32, 32);

	
			cielo = new sky(0, 0);
			map.setTileProperties(6, FlxObject.UP);
			map.setTileProperties(7, FlxObject.UP);
			map.setTileProperties(8, FlxObject.UP);
			map.setTileProperties(9, FlxObject.UP);
			map.setTileProperties(11, FlxObject.UP);
			map.setTileProperties(12, FlxObject.UP);
			map.setTileProperties(14, FlxObject.UP);
			
			
			mapWall=new FlxTilemap();
			mapWall.loadMap(new mapaParedes(), bricks,32,32);
			
			
			paused = false;
			texto=new FlxText(0, 340, FlxG.width, "PAUSED GAME").setFormat(null, 65, 0xFFFFFF, "center");
			texto.kill();
			
			
			add(cielo);
			add(map);
			add(mapWall);
			add(jet);
			add(bala1);
			add(bala2);
			add(bala3);
			add(bala4);
			add(caja);
			add(caja1);
			add(caja2);
			add(caja3);
			add(plataforma1);
			add(plataforma2);
			add(jugador);
			add(texto);
			
			FlxG.worldBounds = new FlxRect(0, 0, 640, 2000);
			
			FlxG.camera.target=jugador;	
			FlxG.camera.follow(jugador);
			FlxG.camera.y -= 128;
			FlxG.camera.setBounds(0,-100,640,2300);
		}
		
		public function movimientoH():void{
			if(direccion && plataforma1.x<400){
				plataforma1.x+=1.5;
			}
			if(direccion && plataforma1.x>=400){
				direccion=false;
			}
			else if(!direccion &&plataforma1.x>100){
				plataforma1.x-=1.5;
			}
			if(!direccion && plataforma1.x<=100){
				direccion=true;
			}
		}
		
		public function movimientoV():void{
			if(direccionV && plataforma2.y<700){
				plataforma2.y+=1.5;	
			}
			if(direccionV && plataforma2.y>=700){
				direccionV=false;
			}
			if(!direccionV && plataforma2.y>500){
				plataforma2.y-=1.5;
			}
			if(!direccionV && plataforma2.y<=500){
				direccionV=true;
			}
		}
		
		public function movimientoJet():void{
			jet.velocity.x = -500;
		}
		
		override public function update():void{
			if(FlxG.keys.justPressed("P"))
				paused = !paused;
			if(!paused)
				texto.kill();
			if(paused){
				texto.y=jugador.y-340;
				texto.revive();
				return;
			}
			
			super.update();
			
			if(FlxG.keys.pressed("RIGHT")){
				jugador.x = jugador.x+2;
				jugador.play("derecha");
			}
			if(FlxG.keys.pressed("LEFT")){
				jugador.x = jugador.x-2;
				jugador.play("izquierda");
			}
			if(FlxG.keys.justPressed("UP") && (FlxG.collide(jugador,map) || FlxG.overlap(jugador,caja) || FlxG.collide(jugador,plataforma1) || FlxG.collide(jugador,plataforma2))){
				jugador.velocity.y = -380;
				jugador.y -= 30;
				jugador.play("arriba");	
			}

			if(FlxG.collide(jugador, bala1) || FlxG.collide(jugador, bala2) || FlxG.collide(jugador, bala3) ||FlxG.collide(jugador, bala4)){
				jugador.kill();
				bala1.kill();
				bala2.kill();
				bala3.kill();
				bala4.kill();
				FlxG.switchState(new Nivel3_2());
			}
				
			if(caja1.overlaps(jet)){
				jet.reduceLife();
				caja1.setPosicion(0,0);
				caja1.kill();
				if(jet.getVida()==0){
					jet.kill();
				}
			}
			if(caja2.overlaps(jet)){
				jet.reduceLife();
				caja2.setPosicion(0,0);
				caja2.kill();
				if(jet.getVida()==0){
					jet.kill();
				}
			}
			if(caja3.overlaps(jet)){
				jet.reduceLife();
				caja3.setPosicion(0,0);
				caja3.kill();
				if(jet.getVida()==0){
					jet.kill();
				}
			}
			if(jugador.overlaps(jet)){
				jugador.kill();
				FlxG.switchState(new Nivel3_2());
			}
			
			if(FlxG.collide(jugador,plataforma1)){
				jugador.velocity.y = 0;
				jugador.acceleration.y = 0;
				plataforma1.velocity.y = 0;
				plataforma1.acceleration.y=0;
				if(direccion && plataforma1.x<400){
					jugador.x+=1.5;
				}
				if(!direccion &&plataforma1.x>100){
					jugador.x-=1.5;
				}
				plataforma1.y=800;
				
			}
			plataforma1.y=800;
			
			if(FlxG.collide(jugador,plataforma2)){
				jugador.velocity.y = 0;
				jugador.acceleration.y = 0;
				plataforma2.velocity.y = 0;
				plataforma2.acceleration.y=0;
				if(direccionV && plataforma2.y<700){
					jugador.y+=1.5;	
				}
				if(!direccionV && plataforma2.y>500){
					jugador.y-=1.5;
				}
				
			}
			
			if(jugador.y)
			
			t+=FlxG.elapsed;
			
			if(t>=6.0){
				jet.x = 900;
				t=0;
			}
			
			//==========
			
			if(jugador.y < 350){
				jet.y = 350;
			}
			else if(jugador.y < 750){
				jet.y = 650;
			}
			
			
			//==========
			
			
			
			movimientoH();
			movimientoV();
			movimientoJet();
			FlxG.collide(jugador,map);	
			FlxG.collide(jugador,mapWall);	
			FlxG.collide(caja,jugador);
			FlxG.collide(caja1,jugador);	
			FlxG.collide(caja2,jugador);	
			FlxG.collide(caja3,jugador);	
			FlxG.collide(caja,map);
			FlxG.collide(caja,mapWall);
			FlxG.collide(caja1,map);
			FlxG.collide(caja2,map);
			FlxG.collide(caja3,map);
			
			FlxG.collide(jugador,plataforma1);
			FlxG.collide(jugador, plataforma2);
			
			
			jugador.acceleration.y = 1000;
			//FlxG.camera.update();
		}
		
		
	}
}
